class Queue{
    constructor(){
        this.items = {}; //队列的元素
        this.lowerCount = 0; //记录删除元素的下标
        this.count = 0; //记录添加的下标
    }

    //添加
    enqueue(element){
        this.items[this.count] = element;
        this.count++;
    }

    //删除
    dequeue(){
        let target = this.items[this.lowerCount];
        delete this.items[this.lowerCount];
        this.lowerCount++;
        return target
    }

    size(){
        return this.count - this.lowerCount
    }
}
// let q = new Queue();

// q.enqueue('a');

// q.enqueue('b');

// q.dequeue(); //删掉

// console.log(q.size())

// console.log(q);

//nums:总人数  k:报数的上限  最终剩下1个人

function flower(nums,k){
    let q = new Queue();
    let list = [];//存放要淘汰的人员

    for(let i = 1;i<=nums;i++){
        q.enqueue(i);
    }

    while(q.size() > 1){
        for(let n = 1;n<k;n++){  //k=3
            q.enqueue(q.dequeue());
        }
        list.push(q.dequeue());
    }
    let rest = q.dequeue();
    return {
        rest, //剩下的最后一个人
        list //淘汰的人员
    }
}

console.log(flower(8,3));